/**
 * Created with IntelliJ IDEA.
 * Description:练习
 * User: GodK
 * Date: 2024-02-20
 * Time: 17:33
 */
import java.util.Scanner;
public class text {
    //在同一个类中,分别定义求两个整数的方法 和 三个小数之和的方法。 并执行代码，求出结果
    public static int add(int a,int b){
        return a+b;
    }
    public static double add(double a,double b,double c){
        return a+b+c;
    }
    public static void main1(String[] args) {
        System.out.println(add(3,7));
        System.out.println(add(3.3,7.7,1.1));
    }
    //在同一个类中定义多个方法：要求不仅可以求2个整数的最大值，还可以求3个小数的最大值？
    public static int max(int a,int b){
        if(a>b){
            return a;
        }else{
            return b;
        }
    }
    public static double max(double a,double b){
        if(a>b){
            return a;
        }else{
            return b;
        }
    }
    public static double max(double a,double b,double c){
        double max = max(a,b);
        if(max>c){
            return max;
        }else{
            return c;
        }
    }
    public static void main2(String[] args) {
        System.out.println(max(1,2));
        System.out.println(max(1.5,2.76,3.435));
    }
    //递归求 N 的阶乘
    public static int cla(int n){
        if(n==1){
            return 1;
        }else{
            return n*cla(n-1);
        }
    }
    public static void main3(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println(cla(scan.nextInt()));
    }
    //递归求 1 + 2 + 3 + ... + 10
    public static int add(int i){
        if(i==1){
            return 1;
        }else{
            return i+add(i-1);
        }
    }
    public static void main4(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println(add(scan.nextInt()));
    }
    //按顺序打印一个数字的每一位(例如 1234 打印出 1 2 3 4)    （递归）
    public static void print(int i){
        if(i/10==0){
            System.out.print(i+" ");
            return;
        }else{
            print(i/10);
            System.out.print(i%10+" ");
        }
    }
    public static void main5(String[] args) {
       print(1234);
    }
    //写一个递归方法，输入一个非负整数，返回组成它的数字之和
    public static int Add(int n){
        if(n<10){
            return n;
        }else{
            return n%10 + Add(n/10);
        }
    }
    public static void main6(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        System.out.println(Add(n));
    }
    //求斐波那契数列的第n项。(迭代实现)
    public static int fei(int n) {
        if(n==1||n==2){
            return 1;
        }
        return fei(n-1)+fei(n-2);
    }

    public static void main7(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        System.out.println(fei(n));
    }
    //递归求解汉诺塔问题
    public static void move(char a,char b){
        System.out.print(a+"->"+b+" ");
    }
    public static void hanoi(int n, char a, char b, char c){
        if( n==1 ){
            move(a,c);
            return;
        }
        hanoi(n-1,a,c,b);
        move(a,c);
        hanoi(n-1,b,a,c);
    }

    public static void main(String[] args) {
        char pos1 = 'A';
        char pos2 = 'B';
        char pos3 = 'C';
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        hanoi(n,pos1,pos2,pos3);
    }
}
